package cn.jxust.slom.server.center;


import cn.jxust.slom.gateway.common.domain.server.center.ServiceDefinition;
import cn.jxust.slom.gateway.common.domain.server.center.ServiceInstance;

/**
 * @author :slom
 * @since :2025-04-27 16:27
 */


public interface ServerCenter {


    /**
     *   初始化
     * @param registerAddress  注册中心地址
     * @param env  要注册到的环境
     */
    void init(String registerAddress, String env);

    /**
     * 注册
     * @param serviceDefinition 服务定义信息
     * @param serviceInstance  服务实例信息
     */
    void register(ServiceDefinition serviceDefinition, ServiceInstance serviceInstance);

    /**
     * 注销
     * @param serviceDefinition 服务定义信息
     * @param serviceInstance 服务实例信息
     */
    void deregister(ServiceDefinition serviceDefinition, ServiceInstance serviceInstance);

    /**
     * 订阅所有服务变更
     * @param serverCenterListener 服务监听器
     */
    void subscribeAllServices(ServerCenterListener serverCenterListener);

}
